"""和文件相关的类定义"""
import json
from 数据分析.data_define import Record

class FileReader:
    def read_data(self)->list[Record]:
        """读取文件数据，将其转换为Record对象，封装到list内返回"""
        pass

class TextFileReader(FileReader):   #文本文件读取器
    def __init__(self,path):
        self.path = path #定义成员变量记录文件的路径
    #复写
    def read_data(self) ->list[Record]:
        f = open(self.path, "r", encoding='UTF-8')#只读模式
        record_list:list[Record] = []
        for line in f.readlines():#按行读取
            data_list = line.strip().split(",")#去首尾空格，用逗号分割成data_list列表
            record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])
            record_list.append(record)#封装
        f.close()#最后需关闭文件
        return record_list

class JsonFileReader(FileReader): #json文件读取器
    def __init__(self, path):
        self.path = path  # 定义成员变量记录文件的路径
    def read_data(self) -> list[Record]:
        f = open(self.path, "r", encoding='UTF-8')
        record_list: list[Record] = []
        for line in f.readlines():
            data_dict = json.loads(line)
            record = Record(data_dict["日期"], data_dict["订单id"], int(data_dict["销售额"]), data_dict["销售省份"])
            record_list.append(record)
        f.close()
        return record_list
if __name__ == '__main__':#确保代码只在直接运行时执行，而不是在作为模块导入时执行。
    text_file_reader = TextFileReader("D:/Data_EX/数据分析.txt")
    list_1 = text_file_reader.read_data()
    json_file_reader = JsonFileReader("D:/Data_EX/数据分析json.txt")
    list_2 = json_file_reader.read_data()
    for l in list_1:
        print(l)
    print("------------------------------------------------------------")
    for l in list_2:
        print(l)
